package com.xcx.robot.mirai;

import com.xcx.robot.mirai.config.UserConfig;
import com.xcx.robot.mirai.key.KeyWord;
import com.xcx.robot.mirai.listener.MyListener;
import net.mamoe.mirai.Bot;
import net.mamoe.mirai.BotFactory;
import net.mamoe.mirai.utils.BotConfiguration;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * @Author: 邢晨旭
 * @Date: 2021/5/19 20:33
 * @Description:
 */
@Component
public class QuickStart {
    public static Bot bot;

//    public static Bot getBot() {
//        return bot;
//    }

    @Resource
    MyListener listener;

    @Resource
    UserConfig userConfig;
//    // 维护一个本类的静态变量
//    private static QuickStart quickStartUtil;
//
//    // 初始化的时候，将本类中的weChatClient赋值给静态的本类变量
//    @PostConstruct
//    public void init() {
//        quickStartUtil = this;
//        quickStartUtil.userConfig = this.userConfig;
//    }
//
//    static {
//        bot = BotFactory.INSTANCE.newBot(quickStartUtil.userConfig.getQq(), quickStartUtil.userConfig.getPassword(), new BotConfiguration() {
//            {
//                //保存设备信息到文件
//                fileBasedDeviceInfo("test.json");
//                setProtocol(MiraiProtocol.ANDROID_PAD);
//            }
//        });
//        bot.login();
//    }
//    public static void star(MyListener listener) {
//        //注册事件监听器
//        bot.getEventChannel().registerListenerHost(listener);
//        //挂载协程
//        bot.join();
//    }

    public void startBot() {
        bot = BotFactory.INSTANCE.newBot(userConfig.getQq(), userConfig.getPassword(), new BotConfiguration() {
            {
                //保存设备信息到文件
                fileBasedDeviceInfo("device.json");
                setProtocol(MiraiProtocol.ANDROID_PAD);
                //保存设备信息到文件
//                fileBasedDeviceInfo("device2.json");
//                setProtocol(MiraiProtocol.ANDROID_PHONE);
            }
        });
        bot.login();
        bot.getEventChannel().registerListenerHost(listener);
        // 这里必须要启新线程去跑bot 不然会占用主线程
        new Thread(() -> {
            bot.join();
        }).start();
    }

}
